接下來就CSS語法,另外一個極其重要的功能就是排版,即針對元件相互間的排列與展示,進行控制,以讓網頁瀏覽者可以看到整齊且經過設計的視覺呈現。
元件的排版,所處理的是各元件彼此間的排列,需與元件內的文字說明有所區隔,初學時,因為兩者個參數語法很相似,容易把兩個搞混,心裡想的是控制元件間的排列,結果卻常常使用到控制元件內的參數,因此這裡主要針對排版,即元件間的排列,進行說明,會用到的是display參數。
display參數,常見的設定有block、flex、grid,以下分別說明。
display: block
(區塊元件排版)設定後,會使得該元件獨佔一整列,並且會自動換行。視覺呈現的效果,會像是「一段段的文章」,每段會分開,即每個元件各自成一列。常見用於<div>
、<p>
、<h1>
等元件。
搭配常見屬性:
border: 1px solid #ccc;
background-color: lightblue;
block在排版上,相對比較單純,因為他就是強制一個元件占滿一列,所以剩下CSS能控制的,多半是區塊大小、邊框等,針對區塊做美化設計的效果,在初學時,會比較容易理解。
display: flex
(彈性盒子排版)設定後,會使得所設定元件的「子元件」,可以在一條線上排列(1D排列),橫列或直行皆可,並且可以控制子元件的對齊,與空間的平均分配。常見於導覽列、卡片列、表單欄位橫排、按鈕群組。
通常需搭配以下屬性:
flex-direction
:控制子元件排列方向
flex-direction: row;
(控制子元件橫列排列); flex-direction: column;
(控制子元件直行排列)justify-content
:控制子元件在主軸上的對齊方式
flex-direction: row
,主軸為橫列方向,若為flex-direction: column
,主軸為直行方向flex-start
(預設,靠左對齊)、flex-end
(靠右對齊)、center
(置中對齊),以及左右對齊,包括space-between
(中間平均間隔)、space-around
(左右各半格,平均間隔)、space-evenly
(完全平均間隔)align-items
:控制子元件在垂直軸的對齊方式
flex-direction
的設定而定,且與前面所提的justify-content
之主軸垂直,若為flex-direction: row
,垂直軸為直行方向,若為flex-direction: column
,垂直軸為橫列方向stretch
(預設,填滿容器高度)、flex-start
(靠上對齊)、flex-end
(靠下對齊)、center
(垂直置中)、baseline
(文字基線對齊)gap
:控制子元件之間的間距,可以用row-gap
、column-gap
,分別就橫列、直行間距進行控制再者,子元件各自也可以進行控制。此乃因為當父層元件設定為彈性盒子後,排版上都會讓子元件填滿整個父層元件空間,因此就有必要針對子元件佔據不同父層元件空間的需求,來進行空間分配。
flex-grow
:設定為1時,該子元件會填滿剩餘空間,數字越大佔據越多空間flex-shrink
:設定為1時,該子元件在空間不足時,會縮小,數字越大佔據越少空間flex-basis
:設定子元件的基準大小,優先進行空間分配,再視有無設定flex-grow
或flex-shrink
進行剩餘或不足的空間分配order
:控制子元素的排列順序,數字越小,越優先排列出現。因為在初學時,彈性盒子也是經過很多次的試誤,才比較熟悉怎麼控制,所以還是想要再次說明,display: flex
的設定是針對父層元件,但他其實影響的是,父層元件所包含的子元件之間的排列,父層元件的空間分配設定是整體子元件一起設定,若要針對各別子元件安排空間分配,則要到子元件進行設定。
彈性盒子排版,是相當常用到的設定,而且設定完後對於網頁的排版會變得相當整齊,就瀏覽的觀感上會相當舒適。因此是學習CSS,一定要熟悉的設定!